package psc.model.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import psc.model.dao.cliente.*;
import psc.model.dao.basicas.*;
import psc.model.dao.acesso.*;
import psc.model.dao.transacao.*;

public abstract class DaoFactory {

	private static EntityManager manager;
	private static final EntityManagerFactory factory;

	static {
		factory = Persistence.createEntityManagerFactory("easyBank");
		if (manager == null || !manager.isOpen()) {
			manager = factory.createEntityManager();
		}
	}

	/* Acesso */

	public static DaoSetor getSetorDao() {
		DaoSetor daoSetor = new DaoSetor(manager);
		return daoSetor;
	}

	public static DaoCargo getCargoDao() {
		DaoCargo daoCargo = new DaoCargo(manager);
		return daoCargo;
	}

	public static DaoFuncionario getFuncionarioDao() {
		DaoFuncionario daoFuncionario = new DaoFuncionario(manager);
		return daoFuncionario;
	}

	public static DaoPerfil getPerfilDao() {
		DaoPerfil daoPerfil = new DaoPerfil(manager);
		return daoPerfil;
	}

	public static DaoRotina getRotinaDao() {
		DaoRotina daoRotina = new DaoRotina(manager);
		return daoRotina;
	}

	public static DaoUsuario getUsuarioDao() {
		DaoUsuario daoUsuario = new DaoUsuario(manager);
		return daoUsuario;
	}

	/* Basicas */
	public static DaoBanco getBancoDao() {
		DaoBanco daoBanco = new DaoBanco(manager);
		return daoBanco;
	}

	public static DaoCidade getCidadeDao() {
		DaoCidade daoCidade = new DaoCidade(manager);
		return daoCidade;
	}

	public static DaoDadosBanco getDadosBancoDao() {
		DaoDadosBanco daoDadosBanco = new DaoDadosBanco(manager);
		return daoDadosBanco;
	}

	public static DaoEstado getEstadoDao() {
		DaoEstado daoEstado = new DaoEstado(manager);
		return daoEstado;
	}

	public static DaoPacoteServicos getPacoteServicosDao() {
		DaoPacoteServicos daoPacoteServicos = new DaoPacoteServicos(manager);
		return daoPacoteServicos;
	}

	public static DaoProfissao getProfissaoDao() {
		DaoProfissao daoProfissao = new DaoProfissao(manager);
		return daoProfissao;
	}

	public static DaoServico getServicoDao() {
		DaoServico daoServico = new DaoServico(manager);
		return daoServico;
	}

	public static DaoTipoCartao getTipoCartaoDao() {
		DaoTipoCartao daoTipoCartao = new DaoTipoCartao(manager);
		return daoTipoCartao;
	}

	public static DaoTipoConta getTipoContaDao() {
		DaoTipoConta daoTipoConta = new DaoTipoConta(manager);
		return daoTipoConta;
	}

	public static DaoTipoLiberacao getTipoLiberacaoDao() {
		DaoTipoLiberacao daoTipoLiberacao = new DaoTipoLiberacao(manager);
		return daoTipoLiberacao;
	}

	public static DaoTipoLimite getTipoLimiteDao() {
		DaoTipoLimite daoTipoLimite = new DaoTipoLimite(manager);
		return daoTipoLimite;
	}

	/* Cliente */
	public static DaoConta getContaDao() {
		DaoConta daoConta = new DaoConta(manager);
		return daoConta;
	}

	public static DaoEmprestimo getEmprestimoDao() {
		DaoEmprestimo daoEmprestimo = new DaoEmprestimo(manager);
		return daoEmprestimo;
	}

	public static DaoLimite getLimiteDao() {
		DaoLimite daoLimite = new DaoLimite(manager);
		return daoLimite;
	}

	public static DaoParcela getParcelaDao() {
		DaoParcela daoParcela = new DaoParcela(manager);
		return daoParcela;
	}

	public static DaoCheque getChequeDao() {
		DaoCheque daoCheque = new DaoCheque(manager);
		return daoCheque;
	}

	public static DaoCliente getClienteDao() {
		DaoCliente daoCliente = new DaoCliente(manager);
		return daoCliente;
	}

	public static DaoAgencia getAgenciaDao() {
		DaoAgencia daoAgencia = new DaoAgencia(manager);
		return daoAgencia;
	}

	/* Transacao */
	public static DaoLiberacao getLiberacaoDao() {
		DaoLiberacao daoLiberacao = new DaoLiberacao(manager);
		return daoLiberacao;
	}

	public static DaoBoleto getBoletoDao() {
		DaoBoleto daoBoleto = new DaoBoleto(manager);
		return daoBoleto;
	}

	public static DaoTransferencia getTransferenciaDao() {
		DaoTransferencia daoTransferencia = new DaoTransferencia(manager);
		return daoTransferencia;
	}

	public static DaoExtrato getExtratoDao() {
		DaoExtrato daoExtrato = new DaoExtrato(manager);
		return daoExtrato;
	}
}
